// 个人信息接口相关
import request from '@/utils/request'
import type {
  ProfileDetail,
  LoginResult,
  ProfileParams,
  UpdateProfile,
  LoginDetail
} from '@/types/member'

enum API {
  // 登录
  wxMinLogin_url = '/login/wxMin',
  // 模拟登录
  wxMinSimpleLogin_url = '/login/wxMin/simple',
  // 获取信息
  getProfile_url = '/member/profile',
  // 修改信息
  UpdateProfile_url = '/member/profile',
  // 传统登录-用户名+密码
  Login_URL = '/login'
}

type LoginParams = {
  code: string
  encryptedData: string
  iv: string
}

/**
 * 微信登录接口
 * @param {LoginParams} data 接收参数对象
 * @returns
 */
export const reqWxMinLogin = (data: LoginParams) => {
  return request<LoginResult>({
    url: API.wxMinLogin_url,
    method: 'POST',
    data
  })
}

/**
 * 模拟微信登录接口
 * @param {string} phoneNumber 用户手机号码
 * @returns
 */
export const reqWxMinSimpleLogin = (phoneNumber: string) => {
  return request<LoginResult>({
    url: API.wxMinSimpleLogin_url,
    method: 'POST',
    data: {
      phoneNumber
    }
  })
}

/**
 * 传统登录-用户名+密码
 * @param {object} data 用户名和密码
 */
export const reqLogin = (data: { account: string; password: string }) => {
  return request<LoginDetail>({
    url: API.Login_URL,
    method: 'POST',
    data
  })
}

/**
 * 获取用户信息
 * @returns
 */
export const reqProfile = () => {
  return request<ProfileDetail>({
    url: API.getProfile_url,
    method: 'GET'
  })
}

/**
 * 更新用户信息
 * @param {ProfileParams} data 请求参数
 * @returns
 */
export const reqUpdateProfile = (data: ProfileParams) => {
  return request<UpdateProfile>({
    url: API.UpdateProfile_url,
    method: 'PUT',
    data
  })
}
